package main

import "fmt"

func main() {
	// ------------- 删除包含元素的map

	fmt.Println("------------- 删除包含元素的map")

	m1 := map[string]int32{
		"b": 1,
		"c": 1,
	}

	// 删除存在的元素
	delete(m1, "b")
	fmt.Printf("%+v, %p \n", m1, m1) // map[c:1], 0xc00001e180

	// 删除不存在的元素
	delete(m1, "d")
	fmt.Printf("%+v, %p \n", m1, m1) // map[c:1], 0xc00001e180

	// ------------- map 不是 nil，但是元素是空

	fmt.Println("------------- map 不是 nil，但是元素是空")

	m2 := map[string]int32{}
	delete(m2, "b") // 也即：删除不存在的元素，什么也不做

	fmt.Printf("%+v, %p \n", m2, m2) // map[], 0xc00001e1e0

	// ------------- 空指针 map 变量

	fmt.Println("------------- 空指针 map 变量")

	var m3 map[string]int32 // m3 is nil，空指针
	delete(m3, "b")

	fmt.Printf("%+v, %p \n", m3, m3) // map[], 0x0
}
